#include <iostream>
#include <vector>
#include <stack>
using namespace std;

vector<stack<char>> v;
stack<char> mid;
vector<char> ans;

int main()
{
    int n, m, s;
    cin >> n >> m >> s;
    for (int i = 0; i < n; i++)
    {
        string s;
        cin >> s;
        stack<char> st;
        for (int i = s.length() - 1; i >= 0; i--)
        {
            st.push(s[i]);
        }
        v.push_back(st);
    }
    int opr;
    cin >> opr;
    while (opr != -1)
    {
        if (opr)
        {
            if (!mid.empty() && mid.size() == s && !v[opr - 1].empty())
            {
                ans.push_back(mid.top());
                mid.pop();
            }
            if (!v[opr - 1].empty())
            {
                mid.push(v[opr - 1].top());
                v[opr - 1].pop();
            }
        }
        else
        {
            if (!mid.empty())
            {
                ans.push_back(mid.top());
                mid.pop();
            }
        }
        cin >> opr;
    }
    for (int i = 0; i < ans.size(); i++)
    {
        cout << ans[i];
    }
    return 0;
}